package rkdwogus7.basic;

import java.util.Iterator;
import java.util.Scanner;

public class J23_MemberMain {
	
	private static Scanner sc = new Scanner(System.in);
	// private static J23_MemberDAO srv = new J23_MemberDAO();
	private static J23_MemberService srv = new J23_MemberDAO();
	// MemberDAO는 MemberService를 구현한 클래스이므로 객체 생성 시
	// 객체 유형을 인터페이스로 정의할 수 있음(주 -종 관계)
	// interface로 받아도 되는거였어!!!
	
	// 메시지도 찍어 볼까나?
	private static final String TITLE = " -=회원 관리 프로그램=- ";
	private static final String MENU =
			" (1) 회원추가 (2) 회원전체조회 (3) 회원상세조회 (4) 회원수정 (5) 회원탈퇴 (0) 종료 ";
	
	private static final String ADDMSG =
			" 아이디, 주민번호, 비밀번호, 우편번호, 주소, 전화번호, 휴대폰번호, 결제방법 순으로 입력하세요 ";
	private static final String ADDOK = " 성공적으로 회원 가입이 완료되었어요! ";
	private static final String UPDMSG1 = " 수정할 회원 아이디를 입력하세요 ";
	private static final String UPDMSG2 =
			" 비밀번호, 우편번호, 주소, 전화번호, 휴대폰, 결제방법 순으로 입력하세요 ";
	private static final String DELMSG = " 삭제할 회원 아이디를 입력하세요 ";
	private static final String DELOK = " 성공적으로 회원정보가 삭제 되었어요! ";
	private static final String UPDOK = " 성공적으로 회원 정보가 수정되었어요! ";
	private static final String EXITOK = " 프로그램을 종료합니다! ";
	private static final String ERRMSG = " 잘못된 코드를 입력하셨어요! ";
	private static final String READMSG = " 상세 조회 할 회원 아이디를 입력하세요 ";
	
	
	public static void main(String[] args) {
		// 회원 관리 프로그램
		System.out.println( TITLE );
		while (true) {
			System.out.println( MENU );
			switch ( sc.next() ) {
			case "1" : addMember();
				break;	// 회원가입
			case "2" : readMember();
				break;	// 전체조회
			case "3" : readOneMember();
				break;	// 상세조회
			case "4" : modifyMember();
				break;	// 회원수정
			case "5" : removeMember();
				break;	// 회원삭제
			case "0" : exitMember();
				break;	// 종료
			default : System.out.println( ERRMSG );
			
			} // switch
		} // while
		
		
		
	} // main


	private static void exitMember() {
		sc.close();
		System.out.println(EXITOK);
		System.exit(0);
		
	}


	private static void removeMember() {
		readMember();	// 삭제 전 전체 자료 출력
		System.out.println( DELMSG );
		String userid = sc.next();
		
		if ( srv.deleteJ23_Member(userid) > 0 ) {
			System.out.println( DELOK );
		}
		
		
	}


	private static void modifyMember() {
		readMember();	// 수정 전 전체 자료 출력
		System.out.println( UPDMSG1 );
		String userid = sc.next();
		System.out.println( UPDMSG2 );
		J23_Member m = new J23_Member(userid, null, sc.next(), sc.next(),
										sc.next(), sc.next(), sc.next(), sc.next());
		if (srv.updateJ23_Member(m) > 0) {
			System.out.println( UPDOK );
		}
		
	}


	private static void readOneMember() {
		readMember();
		System.out.println( READMSG );
		String userid = sc.next();
		System.out.println( srv.selectOneMember(userid) );
		
	}


	private static void readMember() {
		Iterator<J23_Member> iter = srv.selectMember().iterator();
		// srv.readMember() 먼저 실행하고 그 결과를 iterator() 요렇게 만든다는 뜻이래
		while (iter.hasNext()) {
			System.out.println( iter.next() );
			// 이렇게 하면 값이 다 출력이 돼서 나오겠지~
		}
		
	}


	private static void addMember() {
		System.out.println( ADDMSG );
		J23_Member m =
				new J23_Member(sc.next(), sc.next(), sc.next(), sc.next(),
								sc.next(), sc.next(), sc.next(), sc.next());
		
		if( srv.insertJ23_Member(m) > 0 ) {
			System.out.println( ADDOK );
		}
		
	}

} // class















